const fs = require('fs');

const NFs = {
  // 读取文件目录，返回文件列表
  readDir (path) {
    return new Promise((resolve, reject) => {
      fs.readdir(path, function (err, files) {
        if (err) {
          resolve();
          return console.log('文件夹读取失败：' + path);
        }
        resolve(
          files.map(item => {
            return path + item;
          })
        )
      })
    })
  },
  
  // 读取文件，返回文件内容
  readFile (path) {
    return new Promise((resolve, reject) => {
      fs.readFile(path, (err, data)=>{  
        if (err) {  
          resolve();
          return  console.log('文件读取失败：' + path);
        }
        resolve(data.toString());
      })
    })
  },

  // 判断文件、文件夹是否存在，存在返回ture，不存在返回false
  exists (path) {
    return fs.existsSync(path);
  },

  // 创建文件目录
  mkDir (path) {
    return new Promise((resolve, reject) => {
      // 判断是否存在该目录，存在则不创建
      if (this.exists(path)) {
        resolve();
        return;
      }
      fs.mkdir(path, (err)=>{  
        if (err) { 
          reject();
          return console.log('创建目录失败：' + path);
        }
        resolve();
      })
    })
  },

  // 创建并写入文件
  writeFile (path, text = '') {
    return new Promise((resolve, reject) => {
      fs.writeFile(path, text, (err)=>{
        if (err) { 
          reject();
          return console.log('创建文件失败：' + path);
        }
        resolve();
      })
    })
  },

  // 添加文件内容
  appendFile (path, text) {
    return new Promise((resolve, reject) => {
      fs.appendFile(path, text, (err)=>{
        if (err) {
          reject();
          return console.log('添加文件内容失败：' + path);
        }
        resolve();
      })
    })
  },
}

module.exports = NFs;
